1e5aad26d54d45f3678e3ff345d804dbf57f536a,src/main/java/com/wingman/client/classloader/transformers/mapping/RSMemberInjector.java,RSMemberInjector,transformFields,#ClassNode#,130

Before Change



                MethodNode getter = new MethodNode(
                        Opcodes.ASM5,
                        Opcodes.ACC_PUBLIC | (f.isStatic ? Opcodes.ACC_STATIC : 0),
                        "get" + cleanName + (f.isStatic ? "_F__STATIC_WINGMANCLIENT" : ""),
                        getterType.toString(),
                        null,
                        new String[]{});

                InsnList insnList = getter.instructions;

                if (!f.isStatic) {
                    MappingsHelper.addInstructions(insnList,
                            new VarInsnNode(Opcodes.ALOAD, 0)
                    );
                }

                MappingsHelper.addInstructions(insnList,
                        new FieldInsnNode(
                                (f.isStatic ? Opcodes.GETSTATIC : Opcodes.GETFIELD),
                                f.owner,
                                f.name,
                                obfType.toString())
                );

                if (needsCast) {
                    MappingsHelper.addInstructions(insnList,
                            new TypeInsnNode(Opcodes.CHECKCAST, deobfType.getInternalName())
                    );
                }

                if (f.multiplier != 1) {
                    MappingsHelper.addInstructions(insnList,
                            new LdcInsnNode(f.multiplier),
                            new InsnNode(Opcodes.IMUL)
                    );
                }

                MappingsHelper.addInstructions(insnList,
                        new InsnNode(deobfType.getOpcode(Opcodes.IRETURN))
                );

                clazz.methods.add(getter);
            }

            {
                Type setterType = Type.getMethodType(Type.VOID_TYPE, deobfType);

                MethodNode setter = new MethodNode(
                        Opcodes.ASM5,
                        Opcodes.ACC_PUBLIC | (f.isStatic ? Opcodes.ACC_STATIC : 0),
                        "set" + cleanName + (f.isStatic ? "_F__STATIC_WINGMANCLIENT" : ""),
                        setterType.toString(),
                        null,
                        new String[]{});

                InsnList insnList = setter.instructions;

                int index = 0;
                if (!f.isStatic) {
                    MappingsHelper.addInstructions(insnList,
                            new VarInsnNode(Opcodes.ALOAD, index++)
                    );
                }

                MappingsHelper.addInstructions(insnList,
                        new VarInsnNode(deobfType.getOpcode(Opcodes.ILOAD), index)
                );

                if (needsCast) {
                    MappingsHelper.addInstructions(insnList,
                            new TypeInsnNode(Opcodes.CHECKCAST, obfType.getInternalName())
                    );
                }

                try {
                    if (f.multiplier != 1) {
                        MappingsHelper.addInstructions(insnList,
                                new LdcInsnNode(MappingsHelper.getMMI(f.multiplier)),
                                new InsnNode(Opcodes.IMUL)
                        );
                    }

                    MappingsHelper.addInstructions(insnList,
                            new FieldInsnNode((f.isStatic ? Opcodes.PUTSTATIC : Opcodes.PUTFIELD), f.owner, f.name, obfType.toString()),
                            new InsnNode(Opcodes.RETURN)
                    );

After Change


        }

        for (FieldInfo f : fields) {
            if (f.isStatic) {
                continue;
            }

            Type obfType = Type.getType(f.obfType);
            Type deobfType = Type.getType(f.deobfType);

            boolean needsCast = !f.obfType.equals(f.deobfType);
            String cleanName = MappingsHelper.upperCaseify(f.cleanName);

            {
                Type getterType = Type.getMethodType(deobfType);

                MethodNode getter = new MethodNode(
                        Opcodes.ASM5,
                        Opcodes.ACC_PUBLIC,
                        "get" + cleanName,
                        getterType.toString(),
                        null,
                        new String[]{});

                InsnList insnList = getter.instructions;

                MappingsHelper.addInstructions(insnList,
                        new VarInsnNode(Opcodes.ALOAD, 0)
                );

                MappingsHelper.addInstructions(insnList,
                        new FieldInsnNode(
                                Opcodes.GETFIELD,
                                f.owner,
                                f.name,
                                obfType.toString())
                );

                if (needsCast) {
                    MappingsHelper.addInstructions(insnList,
                            new TypeInsnNode(Opcodes.CHECKCAST, deobfType.getInternalName())
                    );
                }

                if (f.multiplier != 1) {
                    MappingsHelper.addInstructions(insnList,
                            new LdcInsnNode(f.multiplier),
                            new InsnNode(Opcodes.IMUL)
                    );
                }

                MappingsHelper.addInstructions(insnList,
                        new InsnNode(deobfType.getOpcode(Opcodes.IRETURN))
                );

                clazz.methods.add(getter);
            }

            {
                Type setterType = Type.getMethodType(Type.VOID_TYPE, deobfType);

                MethodNode setter = new MethodNode(
                        Opcodes.ASM5,
                        Opcodes.ACC_PUBLIC,
                        "set" + cleanName,
                        setterType.toString(),
                        null,
                        new String[]{});

                InsnList insnList = setter.instructions;

                int index = 0;
                MappingsHelper.addInstructions(insnList,
                        new VarInsnNode(Opcodes.ALOAD, index++)
                );

                MappingsHelper.addInstructions(insnList,
                        new VarInsnNode(deobfType.getOpcode(Opcodes.ILOAD), index)
                );

                if (needsCast) {
                    MappingsHelper.addInstructions(insnList,
                            new TypeInsnNode(Opcodes.CHECKCAST, obfType.getInternalName())
                    );
                }

                try {
                    if (f.multiplier != 1) {
                        MappingsHelper.addInstructions(insnList,
                                new LdcInsnNode(MappingsHelper.getMMI(f.multiplier)),
                                new InsnNode(Opcodes.IMUL)
                        );
                    }

                    MappingsHelper.addInstructions(insnList,
                            new FieldInsnNode(Opcodes.PUTFIELD, f.owner, f.name, obfType.toString()),
                            new InsnNode(Opcodes.RETURN)
                    );